mmap 的原理
mmap:每一个进程都有一个列表 vm_area_struct,指向虚拟地址空间的不同的内存块 。

用户态缺页异常
一旦开始访问虚拟内存的某个地址,如果我们发现,并没有对应的物理页,那就触发缺页中断,调用 do_page_fault。
先判断缺页中断是否发生在内核。如果在内核则调用 vmalloc_fault,vmalloc 区域需要内核页表映射到物理页,把内核的这部分放放。
用户空间里面,找到访问的那个地址所在的区域 vm_area_struct,调用 handle_mm_fault 映射这个区域。

